home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / util / misc / ReportPlus.lha / reportplus / source / rp.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-08-20  |  11.8 KB  |  368 lines

  1. /* types */
  2.  
  3. #define AUTO            auto    /* automatic variables */
  4. #define AGLOBAL         ;       /* global (project-scope) */
  5. #define MODULE        static    /* external static (file-scope) */
  6. #define PERSIST        static    /* internal static (function-scope) */
  7. typedef signed char    ABOOL;    /* 8-bit signed quantity (replaces BOOL) */
  8. typedef signed char    SBYTE;    /* 8-bit signed quantity (replaces Amiga BYTE) */
  9. typedef signed short    SWORD;    /* 16-bit signed quantity (replaces Amiga WORD) */
  10. typedef signed long    SLONG;    /* 32-bit signed quantity (same as LONG) */
  11. #define elif        else if
  12.  
  13. #define ASM             __asm
  14. #define REG(x)          register __ ## x
  15.  
  16. #ifdef __STORM__
  17.     #define __inline
  18.     #define chip
  19.     #define EXIT_SUCCESS  0
  20.     #define EXIT_FAILURE 20
  21.     AGLOBAL ULONG stcl_d(STRPTR out, ULONG val);
  22.     AGLOBAL ULONG stcl_h(STRPTR out, ULONG val);
  23. #endif
  24. #ifdef LATTICE
  25.     #define CONST_STRPTR STRPTR
  26. #endif
  27.  
  28. // defined by AmigaOS are: IMPORT, UBYTE, UWORD, ULONG.
  29.  
  30. #define GID_12_LY1 0  // root layout
  31. #define GID_12_CH1 1  // chooser 1   (icon type)
  32. #define GID_12_CB1 2  // checkbox 1  (optimize?)
  33. #define GID_12_CB2 3  // checkbox 2  (planar?)
  34. #define GID_12_ST1 4  // string 1    (pathname(s))
  35. #define GID_12_ST2 5  // string 2    (status)
  36. #define GID_12_BU1 6  // button 1    (pathname(s) ASL)
  37. #define GID_12_BU2 7  // button 2    (menu)
  38. #define GID_12_BU3 8  // button 3    (process)
  39. #define GID_12_BU4 9  // button 4    (stop)
  40. #define GIDS_12    GID_12_BU4
  41.  
  42. #define BUG        0
  43. #define COM        1
  44. #define ENH        2
  45.  
  46. #define FONTX      8
  47. #define FONTY      8
  48.  
  49. // ASCII values (vanillakey)
  50. #define TAB        9 /* tab */
  51. #define LF        10 /* linefeed */
  52. #define CR        13 /* carriage return */
  53. #define ESCAPE    27 /* escape */
  54. #define QUOTE     34 /* " (double quote) */
  55.  
  56. // Scancodes (rawkey)
  57. #define SCAN_UP     (0x4c)
  58. #define SCAN_DOWN   (0x4d)
  59. #define SCAN_ESCAPE (0x45)
  60. #define SCAN_HELP   (0x5f)
  61.  
  62. #define GREY              0
  63. #define BLACK             1
  64. #define WHITE             2
  65. #define RED               3
  66. #define BLUE              4
  67. #define LIGHTGREY         5
  68. #define ORANGE            6
  69. #define YELLOW            7
  70. #define LIGHTGREEN       14
  71.  
  72. #define MAXELEMENTS      14 // counting from 0
  73.  
  74. #define TITLEBARTEXT      "Report+ 5.02"
  75.  
  76. #define FIRSTQUALIFIER 0x61
  77. #define LASTQUALIFIER  0x67
  78. #define KEYUP          0x80 /* key release */
  79.  
  80. #define MN_PROJECT        0
  81. #define MN_HELP           1
  82.  
  83. #define IN_NEW            0
  84. #define IN_OPEN           1
  85. #define IN_SAVE           3
  86. #define IN_SAVEAS         4
  87. #define IN_QUIT           6
  88.  
  89. #define IN_MANUAL         0
  90. #define IN_ABOUT          2
  91.  
  92. AGLOBAL void report1(void);
  93. AGLOBAL void report_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  94. AGLOBAL void report_exit(void);
  95. AGLOBAL void report_init(void);
  96. AGLOBAL void sender(void);
  97. AGLOBAL void config(void);
  98. AGLOBAL void newreport(ABOOL display);
  99. AGLOBAL void openreport(void);
  100. AGLOBAL void savereport(ABOOL saveas);
  101. AGLOBAL void loadreport(void);
  102.  
  103. AGLOBAL void aminet_init(void);
  104. AGLOBAL void aminet_die(void);
  105. AGLOBAL void aminet1(void);
  106. AGLOBAL void aminet_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  107. AGLOBAL void aminet_exit(void);
  108. AGLOBAL void newaminet(ABOOL display);
  109. AGLOBAL void openaminet(void);
  110. AGLOBAL void saveaminet(ABOOL saveas);
  111. AGLOBAL void loadaminet(void);
  112. AGLOBAL ULONG Hook2Func(struct Hook* h, VOID* o, VOID* msg);
  113.  
  114. AGLOBAL void acse1(void);
  115. AGLOBAL void acse2(void);
  116. AGLOBAL void acse3(void);
  117. AGLOBAL void acse_exit(void);
  118. AGLOBAL void decrypt(void);
  119. AGLOBAL void acse_loop(ULONG class, struct Gadget* addr, UWORD code);
  120.  
  121. AGLOBAL void autodoc_init(void);
  122. AGLOBAL void autodoc1(void);
  123. AGLOBAL void newautodoc(ABOOL display);
  124. AGLOBAL void openautodoc(void);
  125. AGLOBAL void saveautodoc(ABOOL saveas);
  126. AGLOBAL void autodoc_loop(ULONG class, struct Gadget* addr, UWORD code);
  127.  
  128. AGLOBAL void manuf1(void);
  129. AGLOBAL void runquery(ULONG querymanuf, ULONG queryproduct);
  130. AGLOBAL void updatemanuf(void);
  131. AGLOBAL void manuf_loop(ULONG class, struct Gadget* addr, UWORD code);
  132.  
  133. AGLOBAL void iff1(void);
  134. AGLOBAL void iff_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  135.  
  136. AGLOBAL void eol1(void);
  137. AGLOBAL void eol2(void);
  138. AGLOBAL void eolconvert(ABOOL gui);
  139. AGLOBAL void eol_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  140. AGLOBAL void eol_die(void);
  141.  
  142. AGLOBAL void size_init(void);
  143. AGLOBAL void size_die(void);
  144. AGLOBAL void size1(void);
  145. AGLOBAL void updatesize(void);
  146. AGLOBAL void size_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  147. AGLOBAL void size_exit(void);
  148.  
  149. AGLOBAL void batt_init(void);
  150. AGLOBAL void batt1(void);
  151. AGLOBAL void batt_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual, SWORD mousex, SWORD mousey);
  152. AGLOBAL void batt_open(void);
  153. AGLOBAL void batt_save(ABOOL saveas);
  154. AGLOBAL void writebatt(ABOOL verify);
  155.  
  156. AGLOBAL void files1(void);
  157. AGLOBAL void files_loop(ULONG class, struct Gadget* addr, UWORD code, UWORD qual);
  158. AGLOBAL void files_init(void);
  159. AGLOBAL void files_exit(void);
  160. AGLOBAL void files_die(void);
  161.  
  162. AGLOBAL void agdb1(void);
  163. AGLOBAL void agdb_loop(ULONG class, struct Gadget* addr, UWORD code);
  164. AGLOBAL void newagdb(ABOOL display);
  165. AGLOBAL void openagdb(void);
  166. AGLOBAL void saveagdb(ABOOL saveas);
  167. AGLOBAL void loadagdb(void);
  168.  
  169. AGLOBAL void icon1(void);
  170. AGLOBAL void icon2(void);
  171. AGLOBAL void iconconvert(ABOOL gui);
  172. AGLOBAL void icon_loop(ULONG gid);
  173. AGLOBAL void icon_do(void);
  174. AGLOBAL void icon_die(void);
  175. AGLOBAL ULONG Hook12Func(struct Hook* h, VOID* o, VOID* msg);
  176.  
  177. // rp.c
  178. AGLOBAL void outputasl(void);
  179. AGLOBAL void outputstring(void);
  180. AGLOBAL void fliplog(ABOOL keyboard);
  181. AGLOBAL void getdate(void);
  182. AGLOBAL void loop(void);
  183. AGLOBAL void navigate(void);
  184. AGLOBAL void rq(STRPTR text);
  185. AGLOBAL void cleanexit(SBYTE rc);
  186. AGLOBAL void closewindow(void);
  187. AGLOBAL void FreeNameNodes(struct List* ListPtr);
  188. AGLOBAL ABOOL asl(void);
  189. AGLOBAL void launcheditor(STRPTR pathname);
  190. AGLOBAL void readordie(STRPTR pathname);
  191. AGLOBAL void writeout(STRPTR pathname); // remember write() is reserved
  192. AGLOBAL ABOOL readin(STRPTR pathname);
  193. AGLOBAL void verynewwindow(SWORD width, SWORD height, STRPTR title, ULONG idcmp);
  194. AGLOBAL void setgadget(WORD leftx, WORD topy, WORD width, WORD height, STRPTR text,
  195.     ULONG flags);
  196. AGLOBAL void append(STRPTR pathname);
  197. AGLOBAL ULONG checkbreak(void);
  198. AGLOBAL void clearlist(struct List*);
  199. AGLOBAL ABOOL aboutloop(void);
  200. AGLOBAL VOID DrawGels(void);
  201. AGLOBAL void AddNameToTail(struct List* ListPtr, STRPTR name);
  202. AGLOBAL void drawgadgets(WORD gadgets);
  203. AGLOBAL void parse(STRPTR terminator);
  204. AGLOBAL void parsetoend(void);
  205. AGLOBAL ABOOL saveasl(STRPTR message);
  206. AGLOBAL void handlemenus(UWORD code);
  207. AGLOBAL void gadtools(void);
  208. AGLOBAL void lockscreen(void);
  209. AGLOBAL void unlockscreen(void);
  210. AGLOBAL void getfillcolour(void);
  211. AGLOBAL void multiasl(STRPTR pattern);
  212. AGLOBAL void convert(ABOOL gui);
  213. AGLOBAL void checkabort(ABOOL gui);
  214. AGLOBAL void InitHook(struct Hook* hook, ULONG (*func)(), void* data);
  215. AGLOBAL ULONG Hook0Func(struct Hook* h, VOID* o, VOID* msg);
  216. AGLOBAL ULONG ASM hookEntry(REG(a0) struct Hook *h, REG(a2) VOID *o, REG(a1) VOID *msg);
  217. AGLOBAL void helpabout(void);
  218. AGLOBAL void clearreactionlist(struct List* ListPtr);
  219. AGLOBAL void textedit(void);
  220.  
  221. #define REPORTHEIGHT    256 /* page 11 */
  222. #define REPORTWIDTH     640 /* page 11 */
  223. #define SENDERWIDTH     442 /* page 12 */
  224. #define SENDERHEIGHT    124 /* page 12 */
  225. #define CONFIGWIDTH     640 /* page 13 */
  226. #define CONFIGHEIGHT    198 /* page 13 */
  227.  
  228. #define AMINETWIDTH     640 // page 21
  229. #define AMINETHEIGHT    256 // page 21
  230.  
  231. #define ACSE1WIDTH      640 /* page 31 */
  232. #define ACSE1HEIGHT     192 /* page 31 */
  233. #define ACSE2WIDTH      600 /* page 32 */
  234. #define ACSE2HEIGHT     126 /* page 32 */
  235. #define ACSE3WIDTH      600 /* page 33 */
  236. #define ACSE3HEIGHT      94 /* page 33 */
  237.  
  238. #define AUTODOCWIDTH    640 /* page 41 */
  239. #define AUTODOCHEIGHT   256 /* page 41 */
  240.  
  241. #define MANUF1HEIGHT    114 /* page 51 */
  242. #define MANUF1WIDTH     640 /* page 51 */
  243.  
  244. #define IFF1WIDTH       640 /* page 61 */
  245. #define IFF1HEIGHT      256 /* page 61 */
  246.  
  247. #define EOL1WIDTH       540 /* page 71 */
  248. #define EOL1HEIGHT      198 /* page 71 */
  249.  
  250. #define SIZE1HEIGHT     512 /* page 81 */
  251. #define SIZE1WIDTH      640 /* page 81 */
  252.  
  253. #define BATT1HEIGHT     166 /* page 91 */
  254. #define BATT1WIDTH      640 /* page 91 */
  255.  
  256. #define FILES1WIDTH     528 /* page 101 */
  257. #define FILES1HEIGHT    256 /* page 101 */
  258.  
  259. #define AGDBWIDTH       508 /* page 111 */
  260. #define AGDBHEIGHT      256 /* page 111 */
  261.  
  262. #define MEDFIELD         32
  263. #define LONGFIELD        64
  264. #define VLONGFIELD      254
  265. #define LONGESTFIELD  16536
  266.  
  267. AGLOBAL struct SharedStruct
  268. {   ABOOL log;
  269.     UWORD function;
  270.     TEXT  editor[VLONGFIELD + 1],
  271.           output[VLONGFIELD + 1],
  272.           pathname[4096 + 1],       /* <= 4K total of pathnames */
  273.           finallist[4096 + 1],
  274.           thisfile[VLONGFIELD + 1], /* <= 254 characters per pathname */
  275.           thatfile[VLONGFIELD + 1];
  276. };
  277.  
  278. /* struct NameNode is simply an extended Node structure: a Node structure
  279. followed by 96 bytes which hold the name of the node. This is so that the
  280. NameNode structure can hold everything relevant to the node. */
  281. AGLOBAL struct NameNode
  282. {   struct Node nn_Node;
  283.     TEXT        nn_Data[96];
  284.     /* It must be long enough that you can hold a long pathname, longer than
  285.     will fit on the display, because it needs to be accurately compared
  286.     with the built-in list of system files. It needs to be at least as
  287.     long as the longest of those built-in files, plus 5 extra characters
  288.     for the .info extension. */
  289. };
  290. AGLOBAL struct ReportStruct
  291. {   ABOOL loaded;
  292.     ULONG floppies;
  293.     UWORD agnus, denise, cpu, model, type, severity, subsystem;
  294.     TEXT  chipram[5], fastram[5],
  295.                 hard[MEDFIELD + 1],
  296.                debug[LONGFIELD + 1],
  297.            developer[LONGFIELD + 1],
  298.            expansion[LONGFIELD + 1],
  299.              summary[LONGFIELD + 1],
  300.                   ks[6],
  301.                   wb[6],
  302.                   pv[LONGFIELD + 1],
  303.                   pp[LONGFIELD + 1],
  304.            thirdname[MEDFIELD + 1],
  305.             thirdver[MEDFIELD + 1],
  306.           thirdmanuf[MEDFIELD + 1],
  307.           lastname[MEDFIELD + 1],
  308.           firstname[MEDFIELD + 1],
  309.           company[MEDFIELD + 1],
  310.           phone[MEDFIELD + 1],
  311.           email[MEDFIELD + 1],
  312.           refer[VLONGFIELD + 1],
  313.           referid[VLONGFIELD + 1],
  314.           path[VLONGFIELD + 1],
  315.           config[VLONGFIELD + 1],
  316.           textfield[6][4096],
  317.           output[VLONGFIELD + 1];
  318. };
  319. AGLOBAL struct AminetStruct
  320. {   TEXT  amishort[41], // `short' is a reserved keyword, of course
  321.           uploader[41],
  322.           author[41],
  323.           requires[41],
  324.           version[41],
  325.           distribution[41],
  326.           type[11], // ____/_____\n
  327.           replaces[41],
  328.           output[VLONGFIELD + 1],
  329.           textfield[4096];
  330.     ULONG maintype,
  331.           subtype;
  332.     ABOOL loaded;
  333. };
  334. AGLOBAL struct AutodocStruct
  335. {   ULONG version;
  336.     ABOOL loaded;
  337.     TEXT  library[MEDFIELD + 1],        /* eg. workbench.library */
  338.           function[MEDFIELD + 1],
  339.           description[VLONGFIELD + 1],
  340.           output[VLONGFIELD + 1],
  341.           textfield[5][4096];
  342.     struct
  343.     {   TEXT  name[MEDFIELD + 1],
  344.               type[MEDFIELD + 1],
  345.               reg[MEDFIELD + 1],
  346.               desc[4096];
  347.     } var[9];
  348. };
  349. AGLOBAL struct IFFStruct
  350. {   ABOOL cd, rkm, obsolete, private, proposal, reserved, standard, unregistered;
  351.     TEXT  pathname[VLONGFIELD + 1];
  352. };
  353. AGLOBAL struct AGDBStruct
  354. {   TEXT  title[MEDFIELD + 1], // `short' is a reserved keyword, of course
  355.           publisher[MEDFIELD + 1],
  356.           players[MEDFIELD + 1],
  357.           hdinstallable[MEDFIELD + 1],
  358.           compatibility[MEDFIELD + 1],
  359.           gametype[MEDFIELD + 1],
  360.           output[VLONGFIELD + 1],
  361.           textfield[4096];
  362.     ABOOL loaded;
  363. };
  364. AGLOBAL struct IconStruct
  365. {   ULONG optimize, planar, // these must be ULONG not ABOOL nor BOOL!
  366.           type;             // this must be ULONG not UWORD!
  367. };
  368.